package firstDay;

public class binaryAdd {

    public static void main(String[] args) {
        String ans = addBinary("1010", "1011");
        System.out.println(ans);
    }
    public static String addBinary(String a, String b) {
        boolean flag = false;
        int a_i = a.length() - 1;
        int b_i = b.length() - 1;
        StringBuffer c = new StringBuffer();
        if (a.length() < b.length()){
            for (int i = a_i; i >= 0; i--, b_i--) {
                if (!flag){
                    if (a.charAt(i) != b.charAt(b_i)){
                        c.append('1');
                    }else if(a.charAt(i) == '0'){
                        c.append('0');
                    }else {
                        c.append('0');
                        flag = true;
                    }
                }else {
                    if (a.charAt(i) != b.charAt(b_i)){
                        c.append('0');
//                        flag = true;
                    }else if(a.charAt(i) == '0'){
                        c.append('1');
                        flag = false;
                    }else {
                        c.append('1');
//                        flag = true;
                    }
                }
            }
            for (int i = b_i; i >= 0; i--) {
                if (flag){
                    if (b.charAt(i) == '1'){
                        c.append('0');
//                        flag = true;
                    }else {
                        c.append('1');
                        flag = false;
                    }
                }else {
                    c.append(b.charAt(i));
                }
            }
        }else {
            for (int i = b_i; i >= 0; i--, a_i--) {
                if (!flag){
                    if (b.charAt(i) != a.charAt(a_i)){
                        c.append('1');
                    }else if(b.charAt(i) == '0'){
                        c.append('0');
                    }else {
                        c.append('0');
                        flag = true;
                    }
                }else {
                    if (b.charAt(i) != a.charAt(a_i)){
                        c.append('0');
//                        flag = true;
                    }else if(b.charAt(i) == '0'){
                        c.append('1');
                        flag = false;
                    }else {
                        c.append('1');
//                        flag = true;
                    }
                }
            }
            for (int i = a_i; i >= 0; i--) {
                if (flag){
                    if (a.charAt(i) == '1'){
                        c.append('0');
//                        flag = true;
                    }else {
                        c.append('1');
                        flag = false;
                    }
                }else {
                    c.append(a.charAt(i));
                }
            }
        }
        if (flag){
            c.append('1');
        }
        c = c.reverse();
        return c.toString();
    }
}
